package com.maxatime.utils;

import java.util.Arrays;
import java.util.Random;

/**
 * @Auther: 梁玉杰
 * @Date: 2021/8/3 14:19
 * @Description: 随机排序
 */
public class randomOrder {

    /**
     * 随机排序
     */
    public static class ArrayUtils {
        private static Random rand = new Random();

            /*
            1、java.util.Random类中实现的随机算法是伪随机，也就是有规则的随机，所谓有规则的就是在给定种(seed)的区间内随机生成数字；
            2、相同种子数的Random对象，相同次数生成的随机数字是完全相同的；
            3、Random类中各方法生成的随机数字都是均匀分布的，也就是说区间内部的数字生成的几率均等；
            * */

        public static <T> void swap(T[] a, int i, int j) {
            T temp = a[i];
            a[i] = a[j];
            a[j] = temp;
        }


            /*
            * Random rand =new Random(25);
            int i;
            i=rand.nextInt(100);
            初始化时25并没有起直接作用（注意：不是没有起作用）,rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100
            * */

        public static <T> void shuffle(T[] arr) {
            int length = arr.length;
            for (int i = length; i > 0; i--) {
                int randInd = rand.nextInt(i);
                swap(arr, randInd, i - 1);
            }
        }

        public static void main(String[] args) {
            String[] arr = { "田双丽", "杜明汉", "沈珍美", "姜明君", "常德琴", "萧丽娟", "庞丽娟", "严发祥" };
            shuffle(arr);
//            System.out.println(arr.length);
//            list ar = new ArrayUtils();
//
//            for (int i = 0; i < ; i++) {
//                System.out.println(arr[i]);
//            }

            System.out.println(Arrays.toString(arr));
        }
    }





}
